package com.brillilab.domain.vo.method;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;

import com.brillilab.domain.enums.method.MethodSourceEnum;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.Data;

/**
 * 方法列表VO
 * 
 * @author lj
 *
 */
@Data 
public class MethodListVo implements Serializable {

	private static final long serialVersionUID = 1L;
	/**
	 * 方法ID
	 */
	private Long id;
	/**
	 * 方法名称
	 */
	private String name;
	/**
	 * 一级类型ID
	 */
	private Long firstTypeId;
	/**
	 * 实验类型ID
	 */
	private Long methodTypeId;
	/**
	 * 源方法Id
	 */
	private Long sourceMethodId;
	/**
	 * 实验类型名称
	 */
	private String methodTypeName;
	/**
	 * 更新时间
	 */
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
	private Date updateTime;
	/**
	 * 来源类型（0导入1推荐2新建3成员分享）
	 */
	private Integer fromType;
	/**
	 * 来源类型名称
	 */
	private String fromTypeName;
	/**
	 * 调用次数
	 */
	private int exportCount;
	/**
	 * 成功次数
	 */
	private int successCount;
	/**
	 * 成功率
	 */
	private BigDecimal successRate;
	/**
	 * 是否是推荐方法：0-否，1-是
	 */
	private int isRecommend;
	/**
	 * 是否是提交推荐审核过：0-否，1-是
	 */
	private int isSubmitAudit;
	
	/**
	 * 是否是参考方法：0-否，1-是
	 */
	private int isCommon;

	public String getFromTypeName() {
		fromTypeName = MethodSourceEnum.getName(fromType);
		return fromTypeName;
	}
	
	public int getIsSubmitAudit() {
		if(isRecommend==1) {
			isSubmitAudit=1;
		}
		return isSubmitAudit;
	}
	
	public BigDecimal getSuccessRate() {
		if(successCount==0 || exportCount==0) {
			return BigDecimal.ZERO;
		}
		BigDecimal bi1 = new BigDecimal(successCount);
		BigDecimal bi2 = new BigDecimal(exportCount);
		successRate = bi1.divide(bi2, 4, RoundingMode.HALF_UP);
		return successRate;
	}

}
